//============================================================================================
/**
 * @file	b_app_tool.h
 * @brief	戦闘用アプリ共通処理
 * @author	Hiroyuki Nakamura
 * @date	06.03.30
 */
//============================================================================================
#ifndef B_APP_TOOL_H
#define B_APP_TOOL_H
#undef GLOBAL
#ifdef B_APP_TOOL_H_GLOBAL
#define GLOBAL	/*	*/
#else
#define GLOBAL	extern
#endif


#include "battle_cursor.h"


//============================================================================================
//	定数定義
//============================================================================================
typedef struct _BAPP_CURSOR_MVWK	BAPP_CURSOR_MVWK;

#define	BAPP_CMV_CANCEL		( 0xfffffffe )	// キャンセル
#define	BAPP_CMV_NONE		( 0xffffffff )	// 動作し

#define	BAPP_CMV_RETBIT		( 0x80 )		// カーソル移動で前回の位置へ戻る


//============================================================================================
//	プロトタイプ宣言
//============================================================================================

//--------------------------------------------------------------------------------------------
/**
 * 選択カーソル移動ワーク作成
 *
 * @param	heap	ヒープID
 *
 * @return	カーソル移動ワーク
 */
//--------------------------------------------------------------------------------------------
GLOBAL BAPP_CURSOR_MVWK * BAPP_CursorMoveWorkAlloc( u32 heap );

//--------------------------------------------------------------------------------------------
/**
 * 選択カーソル移動ワーク解放
 *
 * @param	heap	ヒープID
 *
 * @return	カーソル移動ワーク
 */
//--------------------------------------------------------------------------------------------
GLOBAL void BAPP_CursorMoveWorkFree( BAPP_CURSOR_MVWK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 選択カーソル移動ワーク取得：カーソルデータ
 *
 * @param	wk		選択カーソル移動ワーク
 *
 * @return	カーソルデータ
 */
//--------------------------------------------------------------------------------------------
GLOBAL BCURSOR_PTR BAPP_CursorMvWkGetBCURSOR_PTR( BAPP_CURSOR_MVWK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 選択カーソル移動ワーク取得：カーソル位置
 *
 * @param	wk		選択カーソル移動ワーク
 *
 * @return	カーソル位置
 */
//--------------------------------------------------------------------------------------------
GLOBAL u8 BAPP_CursorMvWkGetPos( BAPP_CURSOR_MVWK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 選択カーソル移動ワーク取得：カーソルON/OFF
 *
 * @param	wk		選択カーソル移動ワーク
 *
 * @return	カーソルON/OFF
 */
//--------------------------------------------------------------------------------------------
GLOBAL u8 BAPP_CursorMvWkGetFlag( BAPP_CURSOR_MVWK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 選択カーソル移動ワークセット：カーソルON/OFF
 *
 * @param	wk		選択カーソル移動ワーク
 * @param	flg		ON/OFFフラグ
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
GLOBAL void BAPP_CursorMvWkSetFlag( BAPP_CURSOR_MVWK * wk, u8 flg );

//--------------------------------------------------------------------------------------------
/**
 * 選択カーソル移動ワークセット：カーソルデータ
 *
 * @param	wk		選択カーソル移動ワーク
 * @param	flg		カーソルデータ
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
GLOBAL void BAPP_CursorMvWkSetBCURSOR_PTR( BAPP_CURSOR_MVWK * wk, BCURSOR_PTR cur );

//--------------------------------------------------------------------------------------------
/**
 * 選択カーソル移動ワークセット：カーソル位置
 *
 * @param	wk		選択カーソル移動ワーク
 * @param	pos		カーソル位置
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
GLOBAL void BAPP_CursorMvWkSetPos( BAPP_CURSOR_MVWK * wk, u8 pos );

//--------------------------------------------------------------------------------------------
/**
 * 選択カーソル位置初期化
 *
 * @param	wk		選択カーソル移動ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
GLOBAL void BAPP_CursorMvWkPosInit( BAPP_CURSOR_MVWK * wk );

//--------------------------------------------------------------------------------------------
/**
 * 選択カーソル移動ワークセット：カーソル位置ワーク
 *
 * @param	wk		選択カーソル移動ワーク
 * @param	pwk		カーソル位置ワーク
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
GLOBAL void BAPP_CursorMvWkSetPoint( BAPP_CURSOR_MVWK * wk, const POINTER_WORK * pwk );

//--------------------------------------------------------------------------------------------
/**
 * 選択カーソル移動ワークセット：移動テーブル
 *
 * @param	wk		選択カーソル移動ワーク
 * @param	mv_tbl	移動テーブル
 *
 * @return	none
 */
//--------------------------------------------------------------------------------------------
GLOBAL void BAPP_CursorMvWkSetMvTbl( BAPP_CURSOR_MVWK * wk, u32 mv_tbl );

//--------------------------------------------------------------------------------------------
/**
 * 選択カーソル移動
 *
 * @param	wk		選択カーソル移動ワーク
 *
 * @return	動作結果
 */
//--------------------------------------------------------------------------------------------
GLOBAL u32 BAPP_CursorMove( BAPP_CURSOR_MVWK * wk );


#undef GLOBAL
#endif	/* B_APP_TOOL_H */